1. Technical Field
The present invention relates in general to a system and method for sharing computer devices. More particularly, the present invention relates to a system and method for multiple hosts to share devices on a common bus.
2. Description of the Related Art
Computer systems in general and International Business Machines (IBM) compatible personal computer systems in particular have attained widespread use for providing computer power to many segments of today's modern society. A personal computer system can usually be defined as a desk top, floor standing, or portable microcomputer that includes a system unit having a system processor and associated volatile and non-volatile memory, a display monitor, a keyboard, one or more diskette drives, a fixed disk storage device and an optional printer. One of the distinguishing characteristics of these systems is the use of a system board to electrically connect these components together.
These personal computer systems are information handling systems which are designed primarily to give independent computing power to a single user (or a relatively small group of users in the case of personal computers which serve as computer server systems) and are inexpensively priced for purchase by individuals or small businesses. A personal computer system may also include one or a plurality of I/O devices (i.e. peripheral devices) which are coupled to the system processor and which perform specialized functions. Examples of I/O devices include modems, sound and video devices or specialized communication devices. Nonvolatile storage devices such as hard disks, CD-ROM drives and magneto-optical drives are also considered to be peripheral devices.
Computers are often linked to one another using a network, such as a local area network (LAN), wide area network (WAN), or other types of networks such as the Internet. By linking computers, one computer can use resources owned by another computer system. These resources can include files stored on nonvolatile storage devices and resources such as printers.
Multiple processors are more often being employed in information handling systems that are becoming increasingly complex. Multiple processors provides a system with increased computing power as compared with systems with a single microprocessor. One challenge, however, faced by designers of systems with multiple processors is the usage of internal and external devices. Each processor typically uses a bus, such as a PCI bus, to communicate with internal and external devices. Use of devices, therefore, is accomplished by including separate devices for each insulated bus or having a master/slave relationship whereby one of the processors manages the usage of the devices for all processors. While mechanisms exist for hosts to communicate to multiple PCI devices on a shared PCI bus, there is no existing mechanisms that allow multiple hosts on a PCI bus to share devices. The challenge of using separate devices for each bus is the inclusion of redundant devices that, in turn, create power and logistic challenges for the system designer. The challenge of using a master/slave relationship is a decrease in throughput caused by extra communication between the processors and the extra load undertaken by the PCI controller of the “master” processor as additional PCI commands are passed through the “master” processor to its PCI controller. What is needed, therefore, is a system and method in which devices on a common bus can be shared by multiple hosts without the need for additional inter-processor communications.